#include <queue>
class Solution {
public:
    void Insert(int num) {
        maxque.push(num);
        minque.push(maxque.top());
        maxque.pop();
        while(minque.size()>maxque.size())
        {
            maxque.push(minque.top());
            minque.pop();
        }
    }

    double GetMedian() 
    { 
        if(maxque.size() == minque.size())
        {
            return  (maxque.top()+minque.top())/2.0;
        }
        return (maxque.top())/1.0;
    }
private:
    priority_queue<int,vector<int>,greater<int>> minque;//最小堆，用于储存数据流中较大的一般数
    priority_queue<int> maxque;//最大堆.用于储存数据流中较小的一半数
};